package com.zmn.oms.dubbo.interfaces.normal.order;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.common.dio.normal.order.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

import javax.validation.constraints.NotNull;

/**
 * 类描述：订单操作
 *
 * @author wangxiaokun
 * @since 2021/04/14 17:58
 */
@Api(
        value = "普通工单",
        tags = {"普通工单"}
)
public interface NormalOrderWorkModifyRemoteService {


    /**
     * 取消订单
     * @param cancelOrderDIO
     * @return
     */
    @ApiOperation(
            value = "普通单取消",
            response = ResponseDTO.class,
            tags = {"普通工单"}
    )
    ResponseDTO cancelOrder(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true)
                                    CancelOrderDIO cancelOrderDIO);

    /**
     * 取消订单
     * @param cancelOrderApplyDIO
     * @return
     */
    @ApiOperation(
            value = "普通单取消申请",
            response = ResponseDTO.class,
            tags = {"普通单取消申请"}
    )
    @Deprecated
    ResponseDTO cancelOrderApply(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true)
                                         CancelOrderApplyDIO cancelOrderApplyDIO);

    /**
     * 认领订单
     *
     * @param orderId
     * @param userId
     * @return
     */
    @ApiOperation(
            value = "普通单认领",
            response = ResponseDTO.class,
            tags = {"认领"}
    )
    @Deprecated
    ResponseDTO claimOrderWork(@NotNull(message = "入参不能为空") @ApiParam(value = "订单号", required = true) Long orderId,
                               @ApiParam(value = "用户id", required = true) Long userId
    );

    /**
     * 不认领订单
     * @param nonClaimOrderDIO
     * @return
     */
    @ApiOperation(
            value = "普通单不认领",
            response = ResponseDTO.class,
            tags = {"认领"}
    )
    ResponseDTO nonClaimOrderWork(@NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true)
                                          NonClaimOrderDIO nonClaimOrderDIO);


    /**
     * 检查工单服务类型
     * @param checkOrderServItemTypeDIO
     * @return
     */
    ResponseDTO checkOrderWorkServItemType(
            @NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true)
            CheckOrderServItemTypeDIO checkOrderServItemTypeDIO
    );

    /**
     * 工单取消检查
     * @param checkOrderCancelDIO
     * @return
     */
    ResponseDTO checkOrderWorkCancel(
            @NotNull(message = "入参不能为空") @ApiParam(value = "入参", required = true)
                    CheckOrderCancelDIO checkOrderCancelDIO
    );
}
